#pragma once

#define LIST(...) {__VA_ARGS__}

// TEST_DATA(indicesData,
//           valuesData,
//           denseShapeData,
//           expectedIndicesOutput,
//           expectedValuesOutput,
//           expectedEmptyRowIndicatorOutput,
//           testcaseName)

// Expected outputs were generated using TensorFlow

TEST_DATA(LIST(0, 1, 0, 3, 2, 2),
          LIST(1, 2, 3),
          LIST(3, 5),
          LIST(0, 1, 0, 3, 1, 0, 2, 2),
          LIST(1.0, 2.0, 42.0, 3.0),
          LIST(0, 1, 0),
          "BasicCase")
TEST_DATA(LIST(0, 0, 1, 1, 2, 2),
          LIST(10, 20, 30),
          LIST(3, 3),
          LIST(0, 0, 1, 1, 2, 2),
          LIST(10.0, 20.0, 30.0),
          LIST(0, 0, 0),
          "NoEmptyRows")
TEST_DATA(LIST(), LIST(), LIST(3, 2), LIST(0, 0, 1, 0, 2, 0), LIST(42.0, 42.0, 42.0), LIST(1, 1, 1), "AllEmptyRows")
TEST_DATA(LIST(1, 0, 1, 1),
          LIST(5, 6),
          LIST(3, 3),
          LIST(0, 0, 1, 0, 1, 1, 2, 0),
          LIST(42.0, 5.0, 6.0, 42.0),
          LIST(1, 0, 1),
          "EmptyRowsAtBothEnds")
TEST_DATA(LIST(0, 2, 2, 0, 4, 1, 6, 3),
          LIST(1.5, 2.5, 3.5, 4.5),
          LIST(8, 4),
          LIST(0, 2, 1, 0, 2, 0, 3, 0, 4, 1, 5, 0, 6, 3, 7, 0),
          LIST(1.5, 42.0, 2.5, 42.0, 3.5, 42.0, 4.5, 42.0),
          LIST(0, 1, 0, 1, 0, 1, 0, 1),
          "LargerDimensions")
TEST_DATA(LIST(10, 0, 25, 1, 50, 2, 90, 3),
          LIST(1.1, 2.2, 3.3, 4.4),
          LIST(100, 5),
          LIST(0,
               0,
               1,
               0,
               2,
               0,
               3,
               0,
               4,
               0,
               5,
               0,
               6,
               0,
               7,
               0,
               8,
               0,
               9,
               0,
               10,
               0,
               11,
               0,
               12,
               0,
               13,
               0,
               14,
               0,
               15,
               0,
               16,
               0,
               17,
               0,
               18,
               0,
               19,
               0,
               20,
               0,
               21,
               0,
               22,
               0,
               23,
               0,
               24,
               0,
               25,
               1,
               26,
               0,
               27,
               0,
               28,
               0,
               29,
               0,
               30,
               0,
               31,
               0,
               32,
               0,
               33,
               0,
               34,
               0,
               35,
               0,
               36,
               0,
               37,
               0,
               38,
               0,
               39,
               0,
               40,
               0,
               41,
               0,
               42,
               0,
               43,
               0,
               44,
               0,
               45,
               0,
               46,
               0,
               47,
               0,
               48,
               0,
               49,
               0,
               50,
               2,
               51,
               0,
               52,
               0,
               53,
               0,
               54,
               0,
               55,
               0,
               56,
               0,
               57,
               0,
               58,
               0,
               59,
               0,
               60,
               0,
               61,
               0,
               62,
               0,
               63,
               0,
               64,
               0,
               65,
               0,
               66,
               0,
               67,
               0,
               68,
               0,
               69,
               0,
               70,
               0,
               71,
               0,
               72,
               0,
               73,
               0,
               74,
               0,
               75,
               0,
               76,
               0,
               77,
               0,
               78,
               0,
               79,
               0,
               80,
               0,
               81,
               0,
               82,
               0,
               83,
               0,
               84,
               0,
               85,
               0,
               86,
               0,
               87,
               0,
               88,
               0,
               89,
               0,
               90,
               3,
               91,
               0,
               92,
               0,
               93,
               0,
               94,
               0,
               95,
               0,
               96,
               0,
               97,
               0,
               98,
               0,
               99,
               0),
          LIST(42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               1.1,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               2.2,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               3.3,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               4.4,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0,
               42.0),
          LIST(1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               0,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               0,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               0,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               0,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1,
               1),
          "SmallRowCount")
TEST_DATA(LIST(0, 10, 1, 25, 2, 50, 3, 90),
          LIST(5.5, 6.6, 7.7, 8.8),
          LIST(5, 100),
          LIST(0, 10, 1, 25, 2, 50, 3, 90, 4, 0),
          LIST(5.5, 6.6, 7.7, 8.8, 42.0),
          LIST(0, 0, 0, 0, 1),
          "SmallColumnCount")
